package com.zkt.weichat.utils;

import lombok.extern.slf4j.Slf4j;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author 赵开泰
 * @program jc-club
 * @date 2025/3/23 01:11
 * @description 微信消息工具类
 **/

@Slf4j
public class MessageUtil {
	
	/**
	 * 解析微信发来的请求（XML）
	 *
	 * @param msg 消息
	 * @return map
	 */
	public static Map<String, String> parseXml(final String msg) {
		// 将解析结果存储在HashMap中
		Map<String, String> map = new HashMap<>();
		
		// 从request中取得输入流
		try (InputStream inputStream = new ByteArrayInputStream(msg.getBytes(StandardCharsets.UTF_8))) {
			// 读取输入流
			SAXReader reader = new SAXReader();
			Document document = reader.read(inputStream);
			// 得到xml根元素
			Element root = document.getRootElement();
			// 得到根元素的所有子节点
			List<Element> elementList = root.elements();
			
			// 遍历根元素的所有子节点
			elementList.forEach(element -> map.put(element.getName(), element.getText()));
		} catch (Exception e) {
			log.error(e.getMessage(), e);
		}
		
		return map;
	}
	
}